When a controlling object (such as an ignition device or a fuel injection device) included in an engine is controlled by using a microcomputer, a reference crank angle position is previously determined to detect timing for the controlling object to perform a predetermined operation with respect to the reference crank angle position. When a rotational speed of the engine needs to be obtained, a time between detection of each reference crank angle position and detection of a next reference crank angle position is measured to arithmetically operate the rotational speed of the engine from the measured time.
For example, in the case where an ignition position (a crank angle position for an ignition operation) of the engine is controlled, the ignition position is arithmetically operated with respect to the rotational speed of the engine, and when the arithmetically operated ignition position is detected, an ignition signal is provided to an ignition circuit for the ignition operation. In this case, the ignition position is arithmetically operated in the form of a time (ignition timer timing data) required for a crankshaft to rotate from the reference crank angle position to the ignition position. The microcomputer causes an ignition timer to start measurement of timing data when the reference crank angle position is detected, and provides the ignition signal to the ignition circuit for the ignition operation when the ignition timer completes the measurement of the timing data.
A known method for detecting a reference crank angle position of an engine is described in Japanese Patent Application Laid-Open Publication No. 61-25017. In the method described in Japanese Patent Application Laid-Open Publication No. 61-25017, as shown in FIG. 13, a rotor 2 having on an outer periphery thereof many reluctors (teeth) 2a and one reluctor missing portion 2b used for detecting the reference crank angle position is mounted to a crankshaft 1 of the engine. The reluctor missing portion 2b is formed by removing one of the many reluctors 2a arranged at regular angular intervals on the outer periphery of the rotor, and the angular intervals between each of the series of reluctor 2a are equal except a portion provided with the reluctor missing portion.
In FIG. 13, a reference numeral 3 denotes a pulse signal generator that detects a leading edge and a trailing edge in a rotational direction of each reluctor 2a to generate a pulse. This pulse signal generator detects an edge of any reluctor of the rotor 2 to generate a pulse when a crank angle position of the engine matches the reference crank angle position. A series of pulses generated by the pulse signal generator 3 is provided through a waveform shaping circuit 4 to a CPU (a microcomputer) 5. The CPU 5 performs a predetermined arithmetical operation to identify generation intervals of the pulses, detects the reluctor missing portion 2b from the identification results, and identifies a pulse generated at the reference crank angle position based on the detected reluctor missing portion 2b. 
A pulse generated when the pulse signal generator detects the leading edge in the rotational direction of each reluctor is herein referred to as a leading edge pulse, and a pulse generated when the pulse signal generator detects the trailing edge in the rotational direction of each reluctor is herein referred to as a trailing edge pulse.
In the example in FIG. 13, seven reluctors 2a to which numbers from 0 to 6 are assigned are provided on the outer periphery of the rotor, the reluctors with the numbers from 0 to 6 are provided at regular angular intervals, and an interval between the number 6 reluctor and the number 0 reluctor is set to twice the interval between other reluctors to provide the reluctor missing portion 2b between the number 6 reluctor and the number 0reluctor 2a. Pole arc angles of the reluctors 2a are equal.
FIGS. 14A and 14B are timing charts showing a waveform of the pulses generated by the pulse signal generator 3 and output signals of the waveform shaping circuit 4. In FIG. 14A, Vs1 and Vs2 denote the leading edge pulse and the trailing edge pulse, respectively, generated by the pulse signal generator 3. Numbers on the leading edge pulses denote the numbers of corresponding reluctors. As shown in FIG. 14B, the waveform shaping circuit 4 generates rectangular wave crank angle pulses Vcr that reach an H level (a high level) between timing when the leading edge pulse Vs1 reaches a threshold and timing when the trailing edge pulse reaches a threshold. Pulse widths of the crank angle pulses Vcr with numbers from 0 to 6 correspond to the pole arc angles of the reluctors 2a with the numbers from 0 to 6, and decrease with an increase in a rotational speed of the crankshaft.
The CPU 5 reads a measurement value of a timer that counts a clock pulse, for example, every time a rising edge of the crank angle pulse Vcr is detected to detect generation intervals of the crank angle pulses. When a generation interval Ti of a crank angle pulse detected this time is α or more times longer than a generation interval Ti-1 of a crank angle pulse detected last time (α is a recognition constant larger than one), the CPU 5 recognizes that the current pulse generation interval includes a reluctor missing portion, and identifies a pulse generated by the pulse signal generator at a position having a fixed positional relationship with the reluctor missing portion as a pulse generated at the reference crank angle position.
In the method described in Japanese Patent Application Laid-Open Publication No. 61-25017, the generation interval Ti-1 of the preceding crank angle pulse is multiplied by a large recognition constant α during extremely low speed rotation of the engine with large pulsation of rotation of the crankshaft, in order to prevent the pulse generation interval Ti detected this time from being α or more times longer than the preceding pulse generation interval Ti-1 though not in the reluctor missing portion to be misidentified as the reluctor missing portion during the extremely low speed rotation. Further, the preceding pulse generation interval Ti-1 is multiplied by a recognition constant α switched according to the rotational speed of the engine in order to eliminate a problem that the reluctor missing portion cannot be detected because the current pulse generation interval is not α or more times longer than the preceding pulse generation interval Ti-1.
If the preceding pulse generation interval Ti-1 is multiplied by the recognition constant α switched according to the rotational speed of the engine, the possibility of misidentifying the reference crank angle position by misidentifying the reluctor missing portion can be reduced. In such a case, however, an initial blast (initial combustion) of the engine occurs at cranking (a start) of the engine, the rotational speed of the engine increases at high acceleration, and, as shown in FIG. 15B, the current pulse interval Ti does not exceed α times of the preceding pulse interval Ti-1 when the pulse interval observed at the time of passage of the reluctor missing portion is narrowed. Thus, there is a possibility of misidentification as not the reluctor missing portion though the reluctor missing portion is passed.
When the large recognition constant α is set during the extremely low speed rotation in order to prevent misidenting the reluctor missing portion by the pulsation of the rotational speed during the low speed rotation of the engine, there tends to be a high possibility of misidentification at the initial blast of the engine. In order to prevent this, it is supposed that the recognition constant at the initial blast of the engine is set to a small value and switched to a large value when the initial blast is completed, but the rotational speed of the engine immediately before the initial blast is a cranking speed itself and extremely unstable, and thus it is difficult to switch the recognition constant at the instant of the initial blast.
For an engine with a small number of cylinders such as a single cylinder engine, rotational resistance of the engine significantly differ depending on strokes (suction, compression, expansion, exhaust), which increases pulsation of a rotational speed during extremely low speed rotation to increase the possibility of misidentifying a reluctor missing portion.
If the engine is-ignited when a piston is pushed back in a compression stroke by an insufficient cranking force in a start operation of the engine, the engine rotates in reverse. Thus, when the engine is about to rotate in reverse, it is desirable to detect the reverse rotation and prevent ignition of the engine. By the conventional reference crank angle position detection method, however, the reverse rotation of the engine cannot be detected as described below.
It is supposed that a rotational direction shown by a solid line arrow and a rotational direction shown by a broken line arrow in FIG. 16 are a forward direction and a reverse direction of the engine, respectively, and the engine is in a forward rotation state and then reversed immediately after the number 3 reluctor is detected by the pulse signal generator 3. At this time, a time chart showing pulse signals generated by the pulse signal generator 3 is as shown in FIG. 17A. Pulses with reference characters “a” and “b” in FIG. 17A denote leading edge pulses and trailing edge pulses, respectively. FIG. 17B shows crank angle pulses Vcr, and numbers on the crank angle pulses correspond to the numbers of the reluctors.
As is apparent from FIGS. 17A and 17B, by the conventional detection method, the pulse signal is detected even when the engine rotates in reverse similarly to when the engine rotates forward, and thus the reverse rotation of the engine cannot be detected.